package circuit1;

/*
 * Borovicska Szglab4 2011
 * @package circuit1
 */
/**
 *
 * @author Erik
 */

import java.util.Observable;
public abstract class Gate extends Observable implements IElement {

    /**
     * A bejovo vezetekeket tarolja kollekcioban
     */
    protected Inputs inputs;
    /**
     * A kimeno vezetekre referencia
     */
    protected Wire output;
    /**
     * Azonosito
     */
    private String id;

    /**
     * Konstruktor
     */
    public Gate() {
        inputs = new Inputs();
    }

    /**
     * Beallitja az output vezeteket
     * @param out 
     */
    public void setOutput(Wire out) {
        output = out;
    }

    /**
     * Visszaadja az output vezeteket
     * @return 
     */
    public Wire getOutput() {
        return output;
    }

    /**
     * Hozzaad egy vezeteket az inputra
     * @param in 
     */
    public void addInput(Wire in) {
        inputs.addInput(in);
    }

    /**
     * Megboki az elemet
     */
    public void prod() {
        output.setValue(act());
    }

    /**
     * Beallitja az ID-t
     * @param _id 
     */
    public void setId(String _id) {
        id = _id;
    }

    /**
     * Lekerdezi az ID-t
     * @return 
     */
    public String getId() {
        return id;
    }
    
    public void show(){
        
    }
    public boolean getOut(){
        return output.getValue();
    }
}
